iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
2
DevOps

就是「懶」才更需要重視DevOps系列 第 11

Day11 Harbor 不讓你的 imge 暴露在外

  • 分享至 

  • xImage
  •  

今天要來介紹一個 Docker 私有庫工具 Harbor,Harbor 是由 VMWare 公司用 Go 語言所開發的開源軟體,用於除存團隊私有的 image,Harbor 提供了簡易的 UI 介面,包含權限控管,及跨機器的自動同步功能,且安裝容易。

上述提及 Harbor 提供權限控管的功能,以下介紹 Harbor 區分哪些權限:

權限訪問介紹

  • Guest: 僅提供該用戶擁有 pull images 的權限
  • Developer: 提供該用戶擁有 pull or push images 的權限
  • Admin: 提供該用戶擁有管理該群組的所有權限,(EX:新增/汰除該群組人員、建立新專案、建立人員、選擇專案是否對外...)

接著介紹該如何安裝 Harbor

以 v1.7.5 做為範例

  • 解壓縮
 $ tar xvf 下載的壓縮檔案.tgz
  • 配置 harbor.yml 檔案 (建議調整以下設定即可)
    • hostname: or
    • harbor_admin_password: 調整預設的admin密碼

執行安裝腳本

  • 建議更改docker-compose.yml檔案內的掛載路徑,盡量別去汙染機器設定
  • EX: 掛載於當前目錄 ./data or ./template
  • 於當前目錄執行 install.sh
## 透過 sudo 或者 root 用戶執行。
sudo ./install.sh

以上三個步驟即可安裝完 Harbor,是不是很簡單呢?
接下來還需要設定幾個步驟,才有辦法從本機將 Image 推至 Harbor

  • 新增以下檔案內容
## /etc/docker/daemon.json
{
    "insecure-registries": ["<Your Harbor Domain> or <IP>"]
}
  • 重新啟動 docker & systemctl
$ sudo systemctl daemon-reload && sudo systemctl restart docker
  • 登入 docker register
$ docker login <Your Harbor Domain> or <IP>

## 顯示的訊息
Username: admin
Password:
Login Succeeded

測試是否可以推 Image

以下以 docker hub 的 nginx 作為示範

$ docker pull nginx:1.12.1

Push Image

# 替 image 建立一個版號
$ docker tag <Your Harbor Domain> or <IP>/nginx/nginx:1.12.1 nginx:1.12.1

# 推至私有庫
$ docker push <Your Harbor Domain> or <IP>/nginx/nginx:1.12.1

Pull Image

# 從私有庫取image
$ docker pull <Your Harbor Domain> or <IP>/nginx/nginx:1.12.1

以上完成整體的建制 & 測試,並附上 Build Images 至 Harbor 的流程圖。


上一篇
Day10 打造屬於團隊的 Image
下一篇
Day12 什麼是 CICD
系列文
就是「懶」才更需要重視DevOps30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
s950112
iT邦新手 5 級 ‧ 2019-10-31 06:19:30

不好意思大大請問一下,
我修改了proxy中的nginx 80 port改成8080

https://ithelp.ithome.com.tw/upload/images/20191031/20107849BGP4zQoo8m.png

但是當我使用docker login

Username: admin
Password: 
Error response from daemon: Get http://harbor.bill.com:8080/v2/: Get http://harbor.bill.com/service/token?account=admin&client_id=docker&offline_token=true&service=harbor-registry: dial tcp 127.0.0.1:80: connect: connection refused

他卻出現連線異常,請問是我有漏掉什麼東西嗎

我要留言

立即登入留言